/-boot
/-docs
/-editor
/-files
/-files-old
/-imports
/-layout
/-shell
/-storage ...
/-storage/attached ...
/-storage/attached/api
DetectStorage.ts
LoadStorage.ts
LoadStorageRecipient.ts
PropertiesByFullPath.ts
StorageAccess.ts
StorageDetect.ts
UpdateStorage.ts
/-storage/attached/dom
/-storage/attached/indexedDB ...
DetectStorage.ts
FileData.ts
LoadStorage.ts
MetadataData.ts
StorageDetect.ts
UpdateStorage.ts
functions.ts
/-storage/attached/localStorage
/-storage/attached/webSQL
/-tests
/-typings
Dom.ts
TypeScriptService.ts
functions.ts
ko.ts
nteapo.html
persistence.api.ts
persistence.ts
shell.ts
teapo.html
teapo.ts
try.html
try.js
 
1
module teapo.storage.attached.indexedDB {
2
​
3
  export class StorageDetect implements attached.StorageDetect {
4
​
5
    constructor(
6
      private _window: { indexedDB: IDBFactory; } = window) {
7
​
8
    }
9
​
10
    detect(
11
      uniqueKey: string,
12
      callback: (
13
        error: Error,
14
        metadata: attached.StorageDetect.BootState,
15
        access: StorageAccess) => void) {
16
​
17
      if (!this._window.indexedDB) {
18
        callback(new Error('No indexedDB object exposed from window.'), null, null);
19
        return;
20
      }
21
​
22
      if (typeof this._window.indexedDB.open !== 'function') {
23
        callback(new Error('No open method exposed on indexedDB object.'), null, null);
24
        return;
25
      }
26
​
27
      var dbName = uniqueKey || 'teapo';
28
​
29
      var openRequest = this._window.indexedDB.open(dbName, 1);
30
      openRequest.onerror = (errorEvent) => callback(wrapErrorEvent(errorEvent, 'detectStorageAsync-open'), null, null);
31
​
32
      openRequest.onupgradeneeded = (versionChangeEvent) => {
33
        var db: IDBDatabase = openRequest.result;
34
        var filesStore = db.createObjectStore('files', { keyPath: 'path' });
35
        var metadataStore = db.createObjectStore('metadata', { keyPath: 'property' });
36
      };
37
​
38
      openRequest.onsuccess = (event) => {
39
        var db: IDBDatabase = openRequest.result;
40
​
41
        var transaction = db.transaction('metadata');
42
        transaction.onerror = (errorEvent) => callback(wrapErrorEvent(errorEvent, 'detectStorageAsync-openRequest.onsuccess-transaction'), null, null);
43
​
44
        var metadataStore = transaction.objectStore('metadata');
45
​
46
        var editedUTCRequest = metadataStore.get('editedUTC');
47
        editedUTCRequest.onerror = (errorEvent) => {
48
          // TODO: editedUTC is not there
49
          callback(null, /* meta */ null, /* access */ null);
50
        };
51
​
52
        editedUTCRequest.onsuccess = (event) => {
53
          var result: MetadataData = editedUTCRequest.result;
54
          callback(null, /* meta */ null, /* access */ null);
55
        };
56
​
57
      };
58
​
59
    }
60
​
61
  }
62
​
63
}
53:54 callback(error: Error, metadata: teapo.storage.attached.StorageDetect.BootState, access: teapo.storage.attached.StorageAccess): void